//Generated on Mon May 28 11:58:01 CEST 2012 with EGF 0.6.1.qualifier
package org.eclipse.egf.emf.pattern.model.call.Class;

import org.eclipse.egf.emf.pattern.base.*;
import org.eclipse.emf.codegen.ecore.genmodel.*;
import org.eclipse.emf.codegen.ecore.genmodel.impl.*;
import org.eclipse.emf.codegen.ecore.genmodel.generator.*;
import org.eclipse.emf.codegen.util.*;
import org.eclipse.emf.ecore.util.*;
import org.eclipse.emf.common.util.*;
import org.eclipse.egf.common.helper.*;
import java.util.*;
import org.eclipse.emf.ecore.*;
import org.eclipse.egf.model.pattern.*;
import org.eclipse.egf.pattern.execution.*;
import org.eclipse.egf.pattern.query.*;

public class ClassgenFeatureoverride {
    protected static String nl;

    public static synchronized ClassgenFeatureoverride create(String lineSeparator) {
        nl = lineSeparator;
        ClassgenFeatureoverride result = new ClassgenFeatureoverride();
        nl = null;
        return result;
    }

    public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
    protected final String TEXT_1 = "";
    protected final String TEXT_2 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
    protected final String TEXT_3 = NL + "\t";
    protected final String TEXT_4 = "[] ";
    protected final String TEXT_5 = "();" + NL;
    protected final String TEXT_6 = NL + "\tpublic ";
    protected final String TEXT_7 = "[] ";
    protected final String TEXT_8 = "()" + NL + "\t{";
    protected final String TEXT_9 = NL + "\t\t";
    protected final String TEXT_10 = " list = (";
    protected final String TEXT_11 = ")";
    protected final String TEXT_12 = "();" + NL + "\t\tif (list.isEmpty()) return ";
    protected final String TEXT_13 = "(";
    protected final String TEXT_14 = "[])";
    protected final String TEXT_15 = "_EEMPTY_ARRAY;";
    protected final String TEXT_16 = NL + "\t\tif (";
    protected final String TEXT_17 = " == null || ";
    protected final String TEXT_18 = ".isEmpty()) return ";
    protected final String TEXT_19 = "(";
    protected final String TEXT_20 = "[])";
    protected final String TEXT_21 = "_EEMPTY_ARRAY;" + NL + "\t\t";
    protected final String TEXT_22 = " list = (";
    protected final String TEXT_23 = ")";
    protected final String TEXT_24 = ";";
    protected final String TEXT_25 = NL + "\t\tlist.shrink();" + NL + "\t\treturn (";
    protected final String TEXT_26 = "[])list.data();" + NL + "\t}" + NL;
    protected final String TEXT_27 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
    protected final String TEXT_28 = NL + "\t";
    protected final String TEXT_29 = " get";
    protected final String TEXT_30 = "(int index);" + NL;
    protected final String TEXT_31 = NL + "\tpublic ";
    protected final String TEXT_32 = " get";
    protected final String TEXT_33 = "(int index)" + NL + "\t{" + NL + "\t\treturn ";
    protected final String TEXT_34 = "(";
    protected final String TEXT_35 = ")";
    protected final String TEXT_36 = "().get(index);" + NL + "\t}" + NL;
    protected final String TEXT_37 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
    protected final String TEXT_38 = NL + "\tint get";
    protected final String TEXT_39 = "Length();" + NL;
    protected final String TEXT_40 = NL + "\tpublic int get";
    protected final String TEXT_41 = "Length()" + NL + "\t{";
    protected final String TEXT_42 = NL + "\t\treturn ";
    protected final String TEXT_43 = "().size();";
    protected final String TEXT_44 = NL + "\t\treturn ";
    protected final String TEXT_45 = " == null ? 0 : ";
    protected final String TEXT_46 = ".size();";
    protected final String TEXT_47 = NL + "\t}" + NL;
    protected final String TEXT_48 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
    protected final String TEXT_49 = NL + "\tvoid set";
    protected final String TEXT_50 = "(";
    protected final String TEXT_51 = "[] new";
    protected final String TEXT_52 = ");" + NL;
    protected final String TEXT_53 = NL + "\tpublic void set";
    protected final String TEXT_54 = "(";
    protected final String TEXT_55 = "[] new";
    protected final String TEXT_56 = ")" + NL + "\t{" + NL + "\t\t((";
    protected final String TEXT_57 = ")";
    protected final String TEXT_58 = "()).setData(new";
    protected final String TEXT_59 = ".length, new";
    protected final String TEXT_60 = ");" + NL + "\t}" + NL;
    protected final String TEXT_61 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
    protected final String TEXT_62 = NL + "\tvoid set";
    protected final String TEXT_63 = "(int index, ";
    protected final String TEXT_64 = " element);" + NL;
    protected final String TEXT_65 = NL + "\tpublic void set";
    protected final String TEXT_66 = "(int index, ";
    protected final String TEXT_67 = " element)" + NL + "\t{" + NL + "\t\t";
    protected final String TEXT_68 = "().set(index, element);" + NL + "\t}" + NL;
    protected final String TEXT_69 = NL;
    protected final String TEXT_70 = NL;
    protected final String TEXT_71 = NL;
    protected final String TEXT_72 = NL;
    protected final String TEXT_73 = NL;
    protected final String TEXT_74 = NL;
    protected final String TEXT_75 = NL;
    protected final String TEXT_76 = NL;
    protected final String TEXT_77 = NL;
    protected final String TEXT_78 = NL;
    protected final String TEXT_79 = NL;

    public ClassgenFeatureoverride() {
        //Here is the constructor
        StringBuffer stringBuffer = new StringBuffer();

        // add initialisation of the pattern variables (declaration has been already done).

    }

    public String generate(Object argument) throws Exception {
        final StringBuffer stringBuffer = new StringBuffer();

        InternalPatternContext ctx = (InternalPatternContext) argument;
        Map<String, String> queryCtx = null;
        IQuery.ParameterDescription paramDesc = null;
        Node.Container currentNode = ctx.getNode();

        List<Object> genFeatureList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> genClassList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> genPackageList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> genModelList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> isJDK50List = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> isInterfaceList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> isImplementationList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> isGWTList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> publicStaticFinalFlagList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> singleWildcardList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> negativeOffsetCorrectionList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> positiveOffsetCorrectionList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> negativeOperationOffsetCorrectionList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)
        List<Object> positiveOperationOffsetCorrectionList = null;
        //this pattern can only be called by another (i.e. it's not an entry point in execution)

        for (Object genFeatureParameter : genFeatureList) {
            for (Object genClassParameter : genClassList) {
                for (Object genPackageParameter : genPackageList) {
                    for (Object genModelParameter : genModelList) {
                        for (Object isJDK50Parameter : isJDK50List) {
                            for (Object isInterfaceParameter : isInterfaceList) {
                                for (Object isImplementationParameter : isImplementationList) {
                                    for (Object isGWTParameter : isGWTList) {
                                        for (Object publicStaticFinalFlagParameter : publicStaticFinalFlagList) {
                                            for (Object singleWildcardParameter : singleWildcardList) {
                                                for (Object negativeOffsetCorrectionParameter : negativeOffsetCorrectionList) {
                                                    for (Object positiveOffsetCorrectionParameter : positiveOffsetCorrectionList) {
                                                        for (Object negativeOperationOffsetCorrectionParameter : negativeOperationOffsetCorrectionList) {
                                                            for (Object positiveOperationOffsetCorrectionParameter : positiveOperationOffsetCorrectionList) {

                                                                this.genFeature = (org.eclipse.emf.codegen.ecore.genmodel.GenFeature) genFeatureParameter;
                                                                this.genClass = (org.eclipse.emf.codegen.ecore.genmodel.GenClass) genClassParameter;
                                                                this.genPackage = (org.eclipse.emf.codegen.ecore.genmodel.GenPackage) genPackageParameter;
                                                                this.genModel = (org.eclipse.emf.codegen.ecore.genmodel.GenModel) genModelParameter;
                                                                this.isJDK50 = (java.lang.Boolean) isJDK50Parameter;
                                                                this.isInterface = (java.lang.Boolean) isInterfaceParameter;
                                                                this.isImplementation = (java.lang.Boolean) isImplementationParameter;
                                                                this.isGWT = (java.lang.Boolean) isGWTParameter;
                                                                this.publicStaticFinalFlag = (java.lang.String) publicStaticFinalFlagParameter;
                                                                this.singleWildcard = (java.lang.String) singleWildcardParameter;
                                                                this.negativeOffsetCorrection = (java.lang.String) negativeOffsetCorrectionParameter;
                                                                this.positiveOffsetCorrection = (java.lang.String) positiveOffsetCorrectionParameter;
                                                                this.negativeOperationOffsetCorrection = (java.lang.String) negativeOperationOffsetCorrectionParameter;
                                                                this.positiveOperationOffsetCorrection = (java.lang.String) positiveOperationOffsetCorrectionParameter;

                                                                if (preCondition(ctx)) {
                                                                    ctx.setNode(new Node.Container(currentNode, getClass()));
                                                                    orchestration(ctx);
                                                                }

                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        ctx.setNode(currentNode);
        if (ctx.useReporter()) {
            ctx.getReporter().executionFinished(OutputManager.computeExecutionOutput(ctx), ctx);
        }

        stringBuffer.append(TEXT_78);
        stringBuffer.append(TEXT_79);
        return stringBuffer.toString();
    }

    public String orchestration(PatternContext ctx) throws Exception {
        InternalPatternContext ictx = (InternalPatternContext) ctx;

        method_doGenerate(new StringBuffer(), ictx);

        if (ictx.useReporter()) {
            Map<String, Object> parameterValues = new HashMap<String, Object>();
            parameterValues.put("genFeature", this.genFeature);
            parameterValues.put("genClass", this.genClass);
            parameterValues.put("genPackage", this.genPackage);
            parameterValues.put("genModel", this.genModel);
            parameterValues.put("isJDK50", this.isJDK50);
            parameterValues.put("isInterface", this.isInterface);
            parameterValues.put("isImplementation", this.isImplementation);
            parameterValues.put("isGWT", this.isGWT);
            parameterValues.put("publicStaticFinalFlag", this.publicStaticFinalFlag);
            parameterValues.put("singleWildcard", this.singleWildcard);
            parameterValues.put("negativeOffsetCorrection", this.negativeOffsetCorrection);
            parameterValues.put("positiveOffsetCorrection", this.positiveOffsetCorrection);
            parameterValues.put("negativeOperationOffsetCorrection", this.negativeOperationOffsetCorrection);
            parameterValues.put("positiveOperationOffsetCorrection", this.positiveOperationOffsetCorrection);
            String outputWithCallBack = OutputManager.computeLoopOutput(ictx);
            String loop = OutputManager.computeLoopOutputWithoutCallback(ictx);
            ictx.getReporter().loopFinished(loop, outputWithCallBack, ictx, parameterValues);
        }
        return null;
    }

    protected org.eclipse.emf.codegen.ecore.genmodel.GenFeature genFeature = null;

    public void set_genFeature(org.eclipse.emf.codegen.ecore.genmodel.GenFeature object) {
        this.genFeature = object;
    }

    protected org.eclipse.emf.codegen.ecore.genmodel.GenClass genClass = null;

    public void set_genClass(org.eclipse.emf.codegen.ecore.genmodel.GenClass object) {
        this.genClass = object;
    }

    protected org.eclipse.emf.codegen.ecore.genmodel.GenPackage genPackage = null;

    public void set_genPackage(org.eclipse.emf.codegen.ecore.genmodel.GenPackage object) {
        this.genPackage = object;
    }

    protected org.eclipse.emf.codegen.ecore.genmodel.GenModel genModel = null;

    public void set_genModel(org.eclipse.emf.codegen.ecore.genmodel.GenModel object) {
        this.genModel = object;
    }

    protected java.lang.Boolean isJDK50 = null;

    public void set_isJDK50(java.lang.Boolean object) {
        this.isJDK50 = object;
    }

    protected java.lang.Boolean isInterface = null;

    public void set_isInterface(java.lang.Boolean object) {
        this.isInterface = object;
    }

    protected java.lang.Boolean isImplementation = null;

    public void set_isImplementation(java.lang.Boolean object) {
        this.isImplementation = object;
    }

    protected java.lang.Boolean isGWT = null;

    public void set_isGWT(java.lang.Boolean object) {
        this.isGWT = object;
    }

    protected java.lang.String publicStaticFinalFlag = null;

    public void set_publicStaticFinalFlag(java.lang.String object) {
        this.publicStaticFinalFlag = object;
    }

    protected java.lang.String singleWildcard = null;

    public void set_singleWildcard(java.lang.String object) {
        this.singleWildcard = object;
    }

    protected java.lang.String negativeOffsetCorrection = null;

    public void set_negativeOffsetCorrection(java.lang.String object) {
        this.negativeOffsetCorrection = object;
    }

    protected java.lang.String positiveOffsetCorrection = null;

    public void set_positiveOffsetCorrection(java.lang.String object) {
        this.positiveOffsetCorrection = object;
    }

    protected java.lang.String negativeOperationOffsetCorrection = null;

    public void set_negativeOperationOffsetCorrection(java.lang.String object) {
        this.negativeOperationOffsetCorrection = object;
    }

    protected java.lang.String positiveOperationOffsetCorrection = null;

    public void set_positiveOperationOffsetCorrection(java.lang.String object) {
        this.positiveOperationOffsetCorrection = object;
    }

    public Map<String, Object> getParameters() {
        final Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("genFeature", this.genFeature);
        parameters.put("genClass", this.genClass);
        parameters.put("genPackage", this.genPackage);
        parameters.put("genModel", this.genModel);
        parameters.put("isJDK50", this.isJDK50);
        parameters.put("isInterface", this.isInterface);
        parameters.put("isImplementation", this.isImplementation);
        parameters.put("isGWT", this.isGWT);
        parameters.put("publicStaticFinalFlag", this.publicStaticFinalFlag);
        parameters.put("singleWildcard", this.singleWildcard);
        parameters.put("negativeOffsetCorrection", this.negativeOffsetCorrection);
        parameters.put("positiveOffsetCorrection", this.positiveOffsetCorrection);
        parameters.put("negativeOperationOffsetCorrection", this.negativeOperationOffsetCorrection);
        parameters.put("positiveOperationOffsetCorrection", this.positiveOperationOffsetCorrection);
        return parameters;
    }

    protected void method_doGenerate(final StringBuffer stringBuffer, final PatternContext ctx) throws Exception {

        stringBuffer.append(TEXT_1);
        if (genModel.isArrayAccessors() && genFeature.isListType() && !genFeature.isFeatureMapType() && !genFeature.isMapType()) {
            stringBuffer.append(TEXT_2);
            if (!isImplementation) {
                stringBuffer.append(TEXT_3);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_4);
                stringBuffer.append(genFeature.getGetArrayAccessor());
                stringBuffer.append(TEXT_5);
            } else {
                stringBuffer.append(TEXT_6);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_7);
                stringBuffer.append(genFeature.getGetArrayAccessor());
                stringBuffer.append(TEXT_8);
                if (genFeature.isVolatile()) {
                    stringBuffer.append(TEXT_9);
                    stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
                    stringBuffer.append(genFeature.getListTemplateArguments(genClass));
                    stringBuffer.append(TEXT_10);
                    stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
                    stringBuffer.append(genFeature.getListTemplateArguments(genClass));
                    stringBuffer.append(TEXT_11);
                    stringBuffer.append(genFeature.getGetAccessor());
                    stringBuffer.append(TEXT_12);
                    if (genModel.useGenerics() && !genFeature.getListItemType(genClass).contains("<") && !genFeature.getListItemType(null).equals(genFeature.getListItemType(genClass))) {
                        stringBuffer.append(TEXT_13);
                        stringBuffer.append(genFeature.getListItemType(genClass));
                        stringBuffer.append(TEXT_14);
                    }
                    stringBuffer.append(genFeature.getUpperName());
                    stringBuffer.append(TEXT_15);
                } else {
                    stringBuffer.append(TEXT_16);
                    stringBuffer.append(genFeature.getSafeName());
                    stringBuffer.append(TEXT_17);
                    stringBuffer.append(genFeature.getSafeName());
                    stringBuffer.append(TEXT_18);
                    if (genModel.useGenerics() && !genFeature.getListItemType(genClass).contains("<") && !genFeature.getListItemType(null).equals(genFeature.getListItemType(genClass))) {
                        stringBuffer.append(TEXT_19);
                        stringBuffer.append(genFeature.getListItemType(genClass));
                        stringBuffer.append(TEXT_20);
                    }
                    stringBuffer.append(genFeature.getUpperName());
                    stringBuffer.append(TEXT_21);
                    stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
                    stringBuffer.append(genFeature.getListTemplateArguments(genClass));
                    stringBuffer.append(TEXT_22);
                    stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
                    stringBuffer.append(genFeature.getListTemplateArguments(genClass));
                    stringBuffer.append(TEXT_23);
                    stringBuffer.append(genFeature.getSafeName());
                    stringBuffer.append(TEXT_24);
                }
                stringBuffer.append(TEXT_25);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_26);
            }
            stringBuffer.append(TEXT_27);
            if (!isImplementation) {
                stringBuffer.append(TEXT_28);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_29);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_30);
            } else {
                stringBuffer.append(TEXT_31);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_32);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_33);
                if (!genModel.useGenerics()) {
                    stringBuffer.append(TEXT_34);
                    stringBuffer.append(genFeature.getListItemType(genClass));
                    stringBuffer.append(TEXT_35);
                }
                stringBuffer.append(genFeature.getGetAccessor());
                stringBuffer.append(TEXT_36);
            }
            stringBuffer.append(TEXT_37);
            if (!isImplementation) {
                stringBuffer.append(TEXT_38);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_39);
            } else {
                stringBuffer.append(TEXT_40);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_41);
                if (genFeature.isVolatile()) {
                    stringBuffer.append(TEXT_42);
                    stringBuffer.append(genFeature.getGetAccessor());
                    stringBuffer.append(TEXT_43);
                } else {
                    stringBuffer.append(TEXT_44);
                    stringBuffer.append(genFeature.getSafeName());
                    stringBuffer.append(TEXT_45);
                    stringBuffer.append(genFeature.getSafeName());
                    stringBuffer.append(TEXT_46);
                }
                stringBuffer.append(TEXT_47);
            }
            stringBuffer.append(TEXT_48);
            if (!isImplementation) {
                stringBuffer.append(TEXT_49);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_50);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_51);
                stringBuffer.append(genFeature.getCapName());
                stringBuffer.append(TEXT_52);
            } else {
                stringBuffer.append(TEXT_53);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_54);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_55);
                stringBuffer.append(genFeature.getCapName());
                stringBuffer.append(TEXT_56);
                stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
                stringBuffer.append(genFeature.getListTemplateArguments(genClass));
                stringBuffer.append(TEXT_57);
                stringBuffer.append(genFeature.getGetAccessor());
                stringBuffer.append(TEXT_58);
                stringBuffer.append(genFeature.getCapName());
                stringBuffer.append(TEXT_59);
                stringBuffer.append(genFeature.getCapName());
                stringBuffer.append(TEXT_60);
            }
            stringBuffer.append(TEXT_61);
            if (!isImplementation) {
                stringBuffer.append(TEXT_62);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_63);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_64);
            } else {
                stringBuffer.append(TEXT_65);
                stringBuffer.append(genFeature.getAccessorName());
                stringBuffer.append(TEXT_66);
                stringBuffer.append(genFeature.getListItemType(genClass));
                stringBuffer.append(TEXT_67);
                stringBuffer.append(genFeature.getGetAccessor());
                stringBuffer.append(TEXT_68);
            }
        }
        if (genFeature.isGet() && (isImplementation || !genFeature.isSuppressedGetVisibility())) {
            stringBuffer.append(TEXT_69);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.getGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0kh3EGJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class/getGenFeature.override.javajetinc
        }
        if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicGet()) {
            stringBuffer.append(TEXT_70);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.basicGetGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0lk_8GJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class/basicGetGenFeature.override.javajetinc
        }
        if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicSet()) {
            stringBuffer.append(TEXT_71);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.basicSetGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0mUm0GJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class/basicSetGenFeature.override.javajetinc
        }
        if (genFeature.isSet() && (isImplementation || !genFeature.isSuppressedSetVisibility())) {
            stringBuffer.append(TEXT_72);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.setGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0nN-sGJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class/setGenFeature.override.javajetinc
        }
        if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicUnset()) {
            stringBuffer.append(TEXT_73);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.basicUnsetGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0qfVIGJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class.basicUnsetGenFeature.override.javajetinc
        }
        if (genFeature.isUnset() && (isImplementation || !genFeature.isSuppressedUnsetVisibility())) {
            stringBuffer.append(TEXT_74);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.unsetGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0q8BEGJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class/unsetGenFeature.override.javajetinc
        }
        if (genFeature.isIsSet() && (isImplementation || !genFeature.isSuppressedIsSetVisibility())) {
            stringBuffer.append(TEXT_75);
            {
                //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.isSetGenFeature.override" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

                InternalPatternContext ictx = (InternalPatternContext) ctx;
                new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
                stringBuffer.setLength(0);

                final Map<String, Object> callParameters = new HashMap<String, Object>();
                callParameters.put("genFeature", genFeature);
                callParameters.put("genClass", genClass);
                callParameters.put("genPackage", genPackage);
                callParameters.put("genModel", genModel);
                callParameters.put("isJDK50", isJDK50);
                callParameters.put("isInterface", isInterface);
                callParameters.put("isImplementation", isImplementation);
                callParameters.put("isGWT", isGWT);
                callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
                callParameters.put("singleWildcard", singleWildcard);
                callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
                callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
                callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
                callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
                CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0sIT4GJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
                stringBuffer.setLength(0);
            }

            //Class/isSetGenFeature.override.javajetinc
        }
        stringBuffer.append(TEXT_76);
        {
            //<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#LogicalName=org.eclipse.egf.emf.pattern.model.call.Class.Class.genFeature.insert" args="genFeature:genFeature,genClass:genClass,genPackage:genPackage,genModel:genModel,isJDK50:isJDK50,isInterface:isInterface,isImplementation:isImplementation,isGWT:isGWT,publicStaticFinalFlag:publicStaticFinalFlag,singleWildcard:singleWildcard,negativeOffsetCorrection:negativeOffsetCorrection,positiveOffsetCorrection:positiveOffsetCorrection,negativeOperationOffsetCorrection:negativeOperationOffsetCorrection,positiveOperationOffsetCorrection:positiveOperationOffsetCorrection"%>

            InternalPatternContext ictx = (InternalPatternContext) ctx;
            new Node.DataLeaf(ictx.getNode(), getClass(), null, stringBuffer.toString());
            stringBuffer.setLength(0);

            final Map<String, Object> callParameters = new HashMap<String, Object>();
            callParameters.put("genFeature", genFeature);
            callParameters.put("genClass", genClass);
            callParameters.put("genPackage", genPackage);
            callParameters.put("genModel", genModel);
            callParameters.put("isJDK50", isJDK50);
            callParameters.put("isInterface", isInterface);
            callParameters.put("isImplementation", isImplementation);
            callParameters.put("isGWT", isGWT);
            callParameters.put("publicStaticFinalFlag", publicStaticFinalFlag);
            callParameters.put("singleWildcard", singleWildcard);
            callParameters.put("negativeOffsetCorrection", negativeOffsetCorrection);
            callParameters.put("positiveOffsetCorrection", positiveOffsetCorrection);
            callParameters.put("negativeOperationOffsetCorrection", negativeOperationOffsetCorrection);
            callParameters.put("positiveOperationOffsetCorrection", positiveOperationOffsetCorrection);
            CallHelper.executeWithParameterInjection("platform:/plugin/org.eclipse.egf.emf.pattern/egf/EMF_Pattern.fcore#_0s36wGJ-Ed-FqczH3ESmRw", new ExecutionContext((InternalPatternContext) ctx), callParameters);
            stringBuffer.setLength(0);
        }

        stringBuffer.append(TEXT_77);
        InternalPatternContext ictx = (InternalPatternContext) ctx;
        new Node.DataLeaf(ictx.getNode(), getClass(), "doGenerate", stringBuffer.toString());
    }

    public boolean preCondition(PatternContext ctx) throws Exception {
        return true;
    }
}